// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗   ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗  ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║   ██║   ██║   ██║██║     █████╗
// ██║╚██╗██║██║   ██║   ██║   ██║██║     ██╔══╝
// ██║ ╚████║╚██████╔╝   ██║   ██║╚██████╗███████╗
// ╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Fluent;
using Elastic.Clients.Elasticsearch.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.TransformManagement;

public sealed partial class TransformSummary
{
	/// <summary>
	/// <para>The security privileges that the transform uses to run its queries. If Elastic Stack security features were disabled at the time of the most recent update to the transform, this property is omitted.</para>
	/// </summary>
	[JsonInclude, JsonPropertyName("authorization")]
	public Elastic.Clients.Elasticsearch.MachineLearning.TransformAuthorization? Authorization { get; init; }

	/// <summary>
	/// <para>The time the transform was created.</para>
	/// </summary>
	[JsonInclude, JsonPropertyName("create_time")]
	public long? CreateTime { get; init; }

	/// <summary>
	/// <para>Free text description of the transform.</para>
	/// </summary>
	[JsonInclude, JsonPropertyName("description")]
	public string? Description { get; init; }

	/// <summary>
	/// <para>The destination for the transform.</para>
	/// </summary>
	[JsonInclude, JsonPropertyName("dest")]
	public Elastic.Clients.Elasticsearch.Core.Reindex.Destination Dest { get; init; }
	[JsonInclude, JsonPropertyName("frequency")]
	public Elastic.Clients.Elasticsearch.Duration? Frequency { get; init; }
	[JsonInclude, JsonPropertyName("id")]
	public string Id { get; init; }
	[JsonInclude, JsonPropertyName("latest")]
	public Elastic.Clients.Elasticsearch.TransformManagement.Latest? Latest { get; init; }
	[JsonInclude, JsonPropertyName("_meta")]
	public IReadOnlyDictionary<string, object>? Meta { get; init; }

	/// <summary>
	/// <para>The pivot method transforms the data by aggregating and grouping it.</para>
	/// </summary>
	[JsonInclude, JsonPropertyName("pivot")]
	public Elastic.Clients.Elasticsearch.TransformManagement.Pivot? Pivot { get; init; }
	[JsonInclude, JsonPropertyName("retention_policy")]
	public Elastic.Clients.Elasticsearch.TransformManagement.RetentionPolicy? RetentionPolicy { get; init; }

	/// <summary>
	/// <para>Defines optional transform settings.</para>
	/// </summary>
	[JsonInclude, JsonPropertyName("settings")]
	public Elastic.Clients.Elasticsearch.TransformManagement.Settings? Settings { get; init; }

	/// <summary>
	/// <para>The source of the data for the transform.</para>
	/// </summary>
	[JsonInclude, JsonPropertyName("source")]
	public Elastic.Clients.Elasticsearch.TransformManagement.Source Source { get; init; }

	/// <summary>
	/// <para>Defines the properties transforms require to run continuously.</para>
	/// </summary>
	[JsonInclude, JsonPropertyName("sync")]
	public Elastic.Clients.Elasticsearch.TransformManagement.Sync? Sync { get; init; }

	/// <summary>
	/// <para>The version of Elasticsearch that existed on the node when the transform was created.</para>
	/// </summary>
	[JsonInclude, JsonPropertyName("version")]
	public string? Version { get; init; }
}